package com.locus.locus.server.dados;

import java.util.Date;

import javax.jdo.PersistenceManager;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

import twitter4j.Status;
import twitter4j.User;

import com.google.appengine.api.datastore.Key;
import com.locus.locus.client.dados.TweetWrapper;

@PersistenceCapable
public final class Tweet implements Wrappable<TweetWrapper>{

	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Key key;
	
	@Persistent
	private String texto;
	@Persistent
	private String nomeExibicao;
	@Persistent
	private String caminhoImagem;
	@Persistent
	private String caminhoSite;	
	@Persistent
	private Date timestamp;
	@Persistent
	private Key chaveConfiguracaoEstabelecimento;
	
	public Tweet() {	}

	public Tweet(Status s) {
		final User usuarioTwitter = s.getUser();
		
		this.texto = s.getText();
		this.nomeExibicao = usuarioTwitter.getScreenName();
		this.caminhoImagem = usuarioTwitter.getProfileImageURL().toString();
		this.timestamp = s.getCreatedAt();
	}

	public Key getKey() {
		return key;
	}
	public void setKey(Key key) {
		this.key = key;
	}
	public String getTexto() {
		return texto;
	}
	public void setTexto(String texto) {
		this.texto = texto;
	}
	public String getNomeExibicao() {
		return nomeExibicao;
	}
	public void setNomeExibicao(String nomeExibicao) {
		this.nomeExibicao = nomeExibicao;
	}
	public String getCaminhoImagem() {
		return caminhoImagem;
	}
	public void setCaminhoImagem(String caminhoImagem) {
		this.caminhoImagem = caminhoImagem;
	}
	public String getCaminhoSite() {
		return caminhoSite;
	}
	public void setCaminhoSite(String caminhoSite) {
		this.caminhoSite = caminhoSite;
	}
	public Date getTimestamp() {
		return timestamp;
	}
	public void setTimestamp(Date timestamp) {
		this.timestamp = timestamp;
	}
	public Key getChaveConfiguracaoEstabelecimento() {
		return chaveConfiguracaoEstabelecimento;
	}
	public void setChaveConfiguracaoEstabelecimento(Key chaveConfiguracaoEstabelecimento) {
		this.chaveConfiguracaoEstabelecimento = chaveConfiguracaoEstabelecimento;
	}
	
	@Override
	public void deserializarRelacionamentos(PersistenceManager pm) {	}
	@Override
	public TweetWrapper gerarWrapper() {
		final TweetWrapper wrapper = new TweetWrapper();

		wrapper.setTexto(this.texto);
		wrapper.setCaminhoImagem(this.caminhoImagem);
		wrapper.setCaminhoSite(this.caminhoSite);
		wrapper.setNomeExibicao(this.nomeExibicao);
		
		return wrapper;
	}
}
